package io.tim.timongodb;

import java.util.HashMap;
import java.util.Map;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import io.tim.timongodb.helper.ConfigHelper;
import io.tim.timongodb.util.ClassUtil;

/**
 * 相当于启动了一个 DBMS 的进程，可以管理实例以及实例中的数据库
 * 将其作为一个单例，就相当于是数据库服务器，但是暂时不像一般的数据库可以对外提供端口服务
 *
 * @author zhangnan
 * @date 2017年4月12日
 *
 */
public class DBMS {
	
	private static final Logger LOGGER = LoggerFactory.getLogger(ClassUtil.class);
	
	private static DBMS TIMONGO_DBMS = null;
	private static Map<String, InstanceHandler> DB_INSTANCES = null;
	private static final int port = ConfigHelper.getPort();
	
	/**
	 * 单例模式
	 */
	private DBMS() {
		DB_INSTANCES = new HashMap<String, InstanceHandler>();
	}
	
	public static DBMS startDBMS() {
		if (TIMONGO_DBMS == null) {
			TIMONGO_DBMS = new DBMS();
		}
		
		init();
		
		return TIMONGO_DBMS;
	}
	
	
	
	/**
	 * DBMS 启动后有一系列初始化操作
	 */
	private static void init() {
		
		startListening();
		
	}
	
	private static void startListening() {
		int currentPort = port;
	}
	
	public static Map<String, InstanceHandler> withDBInstance(String instanceName) {
		DBInstance dbInst = new DBInstance(instanceName);
		InstanceHandler testInst01Handler = new InstanceHandler(dbInst);
		DB_INSTANCES.put(dbInst.getInstanceName(), testInst01Handler);
		return DB_INSTANCES;
	}

}
